using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Json.Serialization;

namespace Lzfy_Refund_Service.Models
{
    /// <summary>
    /// 退费任务完成情况
    /// </summary>
    public class RefundTaskCompletionStatus
    {
        /// <summary>
        /// 用户名
        /// </summary>
        [JsonPropertyName("peopleName")]
        public string? PeopleName { get; set; }

        /// <summary>
        /// 用户账号
        /// </summary>
        [JsonPropertyName("userName")]
        public string? UserName { get; set; }

        /// <summary>
        /// 联系任务量
        /// </summary>
        [JsonPropertyName("taskAmount")]
        public int TaskAmount { get; set; }

        /// <summary>
        /// 接收任务数
        /// </summary>
        [JsonPropertyName("takeTask")]
        public int TakeTask { get; set; }

        /// <summary>
        /// 已联系次数
        /// </summary>
        [JsonPropertyName("contactCount")]
        public int ContactCount { get; set; }

        /// <summary>
        /// 已退款无需联系
        /// </summary>
        [JsonPropertyName("refundedNoContact")]
        public int RefundedNoContact { get; set; }

        /// <summary>
        /// 已拨通并告知
        /// </summary>
        [JsonPropertyName("connectedInformed")]
        public int ConnectedInformed { get; set; }

        /// <summary>
        /// 号码无法拨通(空号)
        /// </summary>
        [JsonPropertyName("unreachableEmpty")]
        public int UnreachableEmpty { get; set; }

        /// <summary>
        /// 已拨通非本人
        /// </summary>
        [JsonPropertyName("connectedNotSelf")]
        public int ConnectedNotSelf { get; set; }

        /// <summary>
        /// 已拨通无人接听
        /// </summary>
        [JsonPropertyName("connectedNoAnswer")]
        public int ConnectedNoAnswer { get; set; }

        /// <summary>
        /// 号码无法拨通(停机)
        /// </summary>
        [JsonPropertyName("numberOutage")]
        public int NumberOutage { get; set; }

        /// <summary>
        /// 被误解为诈骗电话
        /// </summary>
        [JsonPropertyName("mistakenFraud")]
        public int MistakenFraud { get; set; }

        /// <summary>
        /// 无需电话通知
        /// </summary>
        [JsonPropertyName("noCallNeeded")]
        public int NoCallNeeded { get; set; }

        /// <summary>
        /// 总记录数
        /// </summary>
        [JsonPropertyName("totalRecords")]
        public int TotalRecords { get; set; }
    }

    /// <summary>
    /// 退费任务完成情况查询响应
    /// </summary>
    public class RefundTaskCompletionStatusQueryResponse
    {
        /// <summary>
        /// 退费任务完成情况列表
        /// </summary>
        public List<RefundTaskCompletionStatus> Items { get; set; } = new List<RefundTaskCompletionStatus>();

        /// <summary>
        /// 总记录数
        /// </summary>
        public int TotalCount { get; set; }
    }

    /// <summary>
    /// 退费任务完成情况查询请求
    /// </summary>
    public class RefundTaskCompletionStatusQueryRequest
    {
        /// <summary>
        /// 用户名（可选，用于筛选特定用户）
        /// </summary>
        public string? UserName { get; set; }

        /// <summary>
        /// 用户账号（可选，用于筛选特定用户账号）
        /// </summary>
        public string? PeopleName { get; set; }
    }
}